package common

import (
	"fmt"
	"unicode"
)

// ValidateNoChinese 验证字符串中是否包含中文字符
// 如果包含中文字符，返回错误信息
func ValidateNoChinese(fieldName, value string) error {
	if value == "" {
		return nil // 空值不进行中文验证
	}

	for _, char := range value {
		if unicode.Is(unicode.Han, char) {
			return fmt.Errorf("%s不能包含中文字符", fieldName)
		}
	}
	return nil
}

// ValidateMultipleFieldsNoChinese 批量验证多个字段不包含中文
// fields 是一个map，key是字段名，value是字段值
func ValidateMultipleFieldsNoChinese(fields map[string]string) error {
	for fieldName, value := range fields {
		if err := ValidateNoChinese(fieldName, value); err != nil {
			return err
		}
	}
	return nil
}

// ValidateCardholderFieldsNoChinese 专门用于验证持卡人字段不包含中文
func ValidateCardholderFieldsNoChinese(firstName, lastName, email, mobile, address, city, state, postalCode string) error {
	fields := map[string]string{
		"姓名":  firstName,
		"姓氏":  lastName,
		"邮箱":  email,
		"手机号": mobile,
		"地址":  address,
		"城市":  city,
		"州/省": state,
		"邮编":  postalCode,
	}

	return ValidateMultipleFieldsNoChinese(fields)
}
